perm filename PLAY.FAI[1,BGB] blob
sn#103895 filedate 1974-05-26 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE PLAY CALL THE D-A CONVERTER TO PLAY.
C00005 00003 BEGIN MAIN BODY OF PROGRAM
C00008 ENDMK
C⊗;
TITLE PLAY ;CALL THE D-A CONVERTER TO PLAY.
A←1 ↔ B←2 ↔ RET←3
BUFSIZ ←=2048
OPDEF DIP[HRLM]↔OPDEF DAP[HRRM]
OPDEF CAR[HLRZ]↔OPDEF CDR[HRRZ]
OPDEF LAC[MOVE]↔OPDEF DAC[MOVEM]↔OPDEF GO[JRST]
;STORAGE ------------------------------------------------------------
NWD: 0 ;FOR NUMBER OF WORDS OF INPUT.
↓BUF1: BLOCK BUFSIZ+1 ;BUFFER 1
BUF2: BLOCK BUFSIZ+1 ;BUFFER 2
FILBLK: 'MUSIC '↔'MUS '↔0↔0
CLIST: IOWD 1,NWD↔0 ;FOR THE FIRST RECORD
INLIST: 0↔0 ;WILL CONTAIN AN IOWD
OUTWC: 0↔3650 ;WILL CONTAIN AN IOWD FOR D-A
OUTBIT: 4000↔0↔0 ;BITS FOR D-A
;--------------------------------------------------------------------
SA: CALLI↔OPEN 1,[17↔'DSK '↔0]↔HALT SA ;FROM DISK.
SETZM FILBLK+3
MOVEI A,0↔DPB A,[POINT 2,OUTBIT,26] ;ONE CHANNEL.
MOVEI A,3↔DPB A,[POINT 3,OUTBIT,32] ;10 KILO HERTZ.
LX: OUTSTR[ASCIZ/ PLAY ?/]↔INCHRW ;PLAY FROM DISK.
SETZM FILBLK+3↔LOOKUP 1,FILBLK
GO[OUTSTR[ASCIZ/FILE NOT FOUND/]↔GO LX]
XOPEN: MOVSI 'XGP'↔DEVUSE
CAR↔CAIN 1B18↔GO XGPOK
INIT 16,17↔SIXBIT .XGP.↔0
JRA 16,2(16)
XGPOK: OPEN 2,[117↔'AD '↔0]
JRST[OUTSTR[ASCIZ/***D-A NOT AVAILABLE/]↔CALLI 12]
SPWAR: SPCWAR 17,[CALLI]↔OUTSTR [ASCIZ/ GO? /]↔INCHRW A
LNTH: MOVS A,FILBLK+3↔MOVNM A,NWD ;FILE SIZE.
;BEGIN MAIN BODY OF PROGRAM
LOOP: JSP RET,SUB↔BUF1-1↔JUMPLE B,OUT
JSP RET,SUB↔BUF2-1↔JUMPG B,LOOP
;--------------------------------------------------------------------
OUT: CLOSE 1,↔RELEASE 2,
RELEASE 16,↔SPCWAR 0,'SSW'
JRST LX
;--------------------------------------------------------------------
;SUBROUTINE TO SET UP IOWD AND READ AND WRITE.
; 1(RET) WILL BE THE RETURN
; 0(RET) WILL BE THE ADDRESS OF THE BUFFER TO BE
; PUT IN THE RIGHT HALF OF THE IOWD.
; A WILL BE A WORK REGISTER
; B WILL BE TESTED ON THE OUTSIDE.
SUB: MOVNI A,BUFSIZ↔ADDB A,NWD
LAC B,A↔JUMPL A,LAST↔SETZ A,
LAST: ADDI A,BUFSIZ↔MOVNS A
HRL A,0(RET)
MOVSM A,INLIST↔MOVSM A,OUTWC
INPUT 1,INLIST↔OUTPUT 2,OUTWC
GO 1(RET)
;--------------------------------------------------------------------
END SA